// 文件基于流操作进行封装，封装了文件的可读流和可写流
// const stream = require('stream');
// 可读流对象， 必须有 on('data'),on('end'), 如果是文件流还有on('open')和on('close')
// rs.pause() 暂停读取

const fs = require('fs');
const path = require('path');

const rs = fs.createReadStream(path.resolve(__dirname, '1.txt'), {
  flags: 'r', // 创建可读流的表示r，读取文件
  encoding: null, // 编码默认null，buffer
  autoClose: true, // 读取文件后自动关闭
  start: 0, // 读取开始的位置，包前包后
  end: 4, // 结束位置， 字节为单位, 不写end就默认全部读取整个文件
  highWaterMark: 2, //一次读多少个， 默认64k, 64 * 1024 
});

rs.on('open', function (fd) {
  console.log(fd);
});
let arr = []
rs.on('data', function (chunk) {
  arr.push(chunk)
  rs.pause(); // 默认监听了data会一直触发
  console.log('chunk', chunk);
});
setTimeout(() => {
  rs.resume(); // 一秒后继续
}, 1000);
rs.on('end', function () {
  console.log('结束了', Buffer.concat(arr), Buffer.concat(arr).toString());
})

rs.on('close', function () {
  // 配置了autoClose：true
  console.log('文件关闭了');
});

rs.on('error', function (err) {
  console.log(err);
})